- 1402/02/12
- 0
- 77
مشکل در Login کردن در وب با مديريت کاربران Identity
با سلام و احترام
يک پروژه با .Net Core 7 ايجاد کردم که شامل يک WebAPI براي Back End و يک Blazor Server براي Front End
در اين پروژه از Identity براي مديريت کاربران استفاده کردم. فرآيند ورود و خروج و مديريت دسترسيها درست انجام ميشود.
اما يک مشکل جدي دارم:
وقتي با يک کاربر روي يک سيستم Login کنيم، اگر از روي سيستم هاي ديگر آدرس سايت را وارد کنيم با همان کاربري که از روي
سيستم اول Login کرده وارد ميشود. و اگر از روي يک سيستم Logout کنيم، همه موارد Logout ميشود.
ضمن تشکر از زحمات شما لطفا راهنمائي بفرمائيد
با تشکر
- 1402/02/12
سلام دوست عزیز
توضیحات کامل نیست که بتوانم دقیق مشکل را برای شما رفع کنم اما با این توضیحات...
به نظر میرسد مشکل مربوط به کوکیها و نحوه ذخیره سازی اطلاعات جلسه کاربر باشد. به طور کلی، هنگامی که یک کاربر وارد سیستم میشود، یک کوکی با اطلاعات جلسه کاربر ایجاد میشود که به عنوان شناسهی منحصر به فرد برای کاربر در سرور ذخیره میشود. به نظر میرسد که کوکیهای شما در دستگاههای مختلف به اشتراک گذاشته شده و باعث شده که هنگام ورود یا خروج کاربر، تغییرات بر روی تمامی دستگاهها اعمال شود.
برای حل این مشکل، پیشنهاد میکنم که روی تنظیمات کوکیها در برنامهی خود کار کنید. میتوانید از طریق Startup.cs فایل تنظیمات زیر را اعمال کنید:
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = ".YourAppName.Cookie";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.SlidingExpiration = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.SameSite = SameSiteMode.Strict;
});
در این مثال:
- نام کوکی را به یک نام منحصر به فرد تغییر دهید تا از تداخل با کوکیهای دیگر جلوگیری شود.
- از
HttpOnlyبرای جلوگیری از دسترسی اسکریپتهای جاوااسکریپت به کوکی استفاده کنید. - زمان انقضای کوکی را تنظیم کنید (در این مثال به 60 دقیقه تنظیم شده است).
- از
SlidingExpirationبرای تمدید زمان انقضای کوکی در صورت فعالیت کاربر استفاده کنید. - برای افزایش امنیت،
SecurePolicyرا بر رویAlwaysتنظیم کنید تا کوکیها فقط در ارتباطات امن (HTTPS) ارسال شوند. - تتنظیم
SameSiteرا بر رویStrictقرار دهید تا مرورگر کوکی را فقط هنگامی که درخواست از همان سایت اصلی باشد ارسال کند. این کمک میکند تا از اشتراک گذاری کوکیها بین سایتهای مختلف جلوگیری شود.
بعد از اعمال این تغییرات، برنامهی خود را مجدداً اجرا کنید و بررسی کنید که آیا مشکل همچنان وجود دارد یا خیر. اگر مشکل برطرف نشد، ممکن است مشکلی در قسمت مدیریت جلسات وجود داشته باشد که باید بررسی شود. در این صورت، لطفاً توضیحات بیشتری در مورد نحوهی پیادهسازی مدیریت جلسات در برنامهی خود ارائه دهید تا بتوانم بهتر به شما کمک کنم.
امیدوارم این پاسخ مشکل شما را حل کند. در صورت بروز هر گونه سوال یا مشکل دیگر، لطفاً در ادامه همین باگ اطلاع دهید تا به شما کمک کنم.
موفق باشید🌹
- 1402/02/17
با سلام و احترام
ضمن تشکر از توجه و راهنمايي دوستان عزيز در پشتيباني باگتو
صرفا جهت اطلاع عزيزاني که ممکن است همانند بنده تازه وارد اين نوع برنامه نويسي شوند مطلب زير را مينويسم.
بعد از راهنمايئي دوستان باگتو ، بخش
ASP.NET Core Blazor state management
را بررسي کردم و متوجه شدم که اشکال برنامه من اين است که اطلاعات Session کاربر را در يک
Singleton ذخيره کرده بودم.
براي اين موضوع اطلاعات کاملي در لينک زير آمده که با استفاده از آن مشکل برنامه حل شد.
https://learn.microsoft.com/en-us/aspnet/core/blazor/state-management?view=aspnetcore-7.0&pivots=server
براي همه کساني که در جهت کمک به ديگران، اطلاعات خود را به اشتراک ميگذارند، آرزوي موفقيت روز افزون و سلامتي دارم.
پاسخی برای این باگ ارسال کنید
لطفا کدها را درون قطعه کد ارسال نمایید
برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری